home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / Misc / GMS / GMSDev / Includes / system / events.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-11-14  |  2.8 KB  |  85 lines

  1. #ifndef SYSTEM_EVENTS_H
  2. #define SYSTEM_EVENTS_H TRUE
  3.  
  4. /*
  5. **  $VER: events.h V0.9B
  6. **
  7. **  (C) Copyright 1996-1997 DreamWorld Productions.
  8. **      All Rights Reserved.
  9. **
  10. */
  11.  
  12. #ifndef DPKERNEL_H
  13. #include <dpkernel/dpkernel.h>
  14. #endif
  15.  
  16. /*****************************************************************************
  17. ** The Event Node.
  18. */
  19.  
  20. #define TAGS_EVENT ((ID_SPCTAGS<<16)|ID_EVENT)
  21.  
  22. struct EvtEntry {
  23.   struct Event *Event;
  24.   LONG (*Routine)(void);
  25. };
  26.  
  27. struct Event {
  28.   struct Event *Next;       /* [00] Next event node */
  29.   struct Event *Prev;       /* [04] Previous event node */
  30.   __asm LONG (*Routine)(register __a0 APTR Reg1, register __d0 LONG Reg2);
  31.   APTR   Args;              /* [12] Event arguments */
  32.   WORD   Priority;          /* [16] Sets position in the event chain */
  33.   WORD   Number;            /* [18] Event number */
  34.   LONG   Flags;             /* [20] Special flags */
  35.   struct DPTask *Task;      /* [24] Task owner */
  36. };
  37.  
  38. /* Event Structure Tags */
  39.  
  40. #define EVA_Routine  (TAPTR|8)
  41. #define EVA_Args     (TAPTR|12)
  42. #define EVA_Priority (TWORD|16)
  43. #define EVA_Number   (TWORD|18)
  44. #define EVA_Flags    (TLONG|20)
  45.  
  46. /* Event->Flags */
  47.  
  48. #define EVF_ON        0x00000001  /* Call routine on event (default) */
  49. #define EVF_AFTER     0x00000002  /* Call routine after event */
  50. #define EVF_UNTRACKED 0x00000004  /* Do not track the event node */
  51. #define EVF_GLOBAL    0x00000008  /* Always call if event occurs (default) */
  52. #define EVF_TASK      0x00000010  /* Call if I am the active task */
  53.  
  54. /* Return flags for Event->Routine() and CallEventList() */
  55.  
  56. #define EVR_BREAK     0x00000001  /* Do not execute any more events */
  57. #define EVR_FAIL      0x00000002  /* Return immediately (failure) */
  58.  
  59. /*****************************************************************************
  60. ** Available event types.
  61. */
  62.  
  63. #define EVTNODE (0L)
  64. #define EVTCALL (0x80000000L)
  65.  
  66. #define EVT_OnNewTask     (1|EVTNODE)   /* A new task is appearing */
  67. #define EVT_OnRemTask     (2|EVTNODE)   /* An existing task is being removed */
  68. #define EVT_ab            (3|EVTNODE)   /* */
  69. #define EVT_ac            (4|EVTNODE)   /* */
  70. #define EVT_ad            (5|EVTNODE)   /* Args: <TimesPerSecond> */
  71. #define EVT_ae            (6|EVTNODE)   /* Args: <Task> */
  72. #define EVT_af            (7|EVTNODE)   /* Args: <Task> */
  73. #define EVT_Timer         (8|EVTCALL)   /* Args: <MicroSeconds> */
  74. #define EVT_DiskInsert    (9|EVTNODE)   /* Args: <None> */
  75. #define EVT_DiskRemove   (10|EVTNODE)   /* Args: <None> */
  76. #define EVT_SelfDestruct (11|EVTNODE)   /* Args: <Task>   */
  77. #define EVT_OnDisplay    (12|EVTNODE)   /* Args: <Task>   */
  78. #define EVT_Expunge      (13|EVTNODE)   /* Args: <None>   */
  79. #define EVT_LowMemory    (14|EVTNODE)   /* Args: <PercentageLeft> */
  80. #define EVT_PlaySound    (15|EVTCALL)   /* Args: <Task/Object>    */
  81.  
  82. #define EVT_END          200  /* Maximum amount of events for this version */
  83.  
  84. #endif /* SYSTEM_EVENTS_H */
  85.